home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / asm / ptrace-abi.h < prev    next >
C/C++ Source or Header  |  2008-10-24  |  4KB  |  144 lines

  1. #ifndef _ASM_X86_PTRACE_ABI_H
  2. #define _ASM_X86_PTRACE_ABI_H
  3.  
  4. #ifdef __i386__
  5.  
  6. #define EBX 0
  7. #define ECX 1
  8. #define EDX 2
  9. #define ESI 3
  10. #define EDI 4
  11. #define EBP 5
  12. #define EAX 6
  13. #define DS 7
  14. #define ES 8
  15. #define FS 9
  16. #define GS 10
  17. #define ORIG_EAX 11
  18. #define EIP 12
  19. #define CS  13
  20. #define EFL 14
  21. #define UESP 15
  22. #define SS   16
  23. #define FRAME_SIZE 17
  24.  
  25. #else /* __i386__ */
  26.  
  27. #if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
  28. #define R15 0
  29. #define R14 8
  30. #define R13 16
  31. #define R12 24
  32. #define RBP 32
  33. #define RBX 40
  34. /* arguments: interrupts/non tracing syscalls only save upto here*/
  35. #define R11 48
  36. #define R10 56
  37. #define R9 64
  38. #define R8 72
  39. #define RAX 80
  40. #define RCX 88
  41. #define RDX 96
  42. #define RSI 104
  43. #define RDI 112
  44. #define ORIG_RAX 120       /* = ERROR */
  45. /* end of arguments */
  46. /* cpu exception frame or undefined in case of fast syscall. */
  47. #define RIP 128
  48. #define CS 136
  49. #define EFLAGS 144
  50. #define RSP 152
  51. #define SS 160
  52. #define ARGOFFSET R11
  53. #endif /* __ASSEMBLY__ */
  54.  
  55. /* top of stack page */
  56. #define FRAME_SIZE 168
  57.  
  58. #endif /* !__i386__ */
  59.  
  60. /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  61. #define PTRACE_GETREGS            12
  62. #define PTRACE_SETREGS            13
  63. #define PTRACE_GETFPREGS          14
  64. #define PTRACE_SETFPREGS          15
  65. #define PTRACE_GETFPXREGS         18
  66. #define PTRACE_SETFPXREGS         19
  67.  
  68. #define PTRACE_OLDSETOPTIONS      21
  69.  
  70. /* only useful for access 32bit programs / kernels */
  71. #define PTRACE_GET_THREAD_AREA    25
  72. #define PTRACE_SET_THREAD_AREA    26
  73.  
  74. #ifdef __x86_64__
  75. # define PTRACE_ARCH_PRCTL      30
  76. #endif
  77.  
  78. #define PTRACE_SYSEMU          31
  79. #define PTRACE_SYSEMU_SINGLESTEP  32
  80.  
  81. #define PTRACE_SINGLEBLOCK    33    /* resume execution until next branch */
  82.  
  83. #ifndef __ASSEMBLY__
  84.  
  85. #include <asm/types.h>
  86.  
  87. /* configuration/status structure used in PTRACE_BTS_CONFIG and
  88.    PTRACE_BTS_STATUS commands.
  89. */
  90. struct ptrace_bts_config {
  91.     /* requested or actual size of BTS buffer in bytes */
  92.     __u32 size;
  93.     /* bitmask of below flags */
  94.     __u32 flags;
  95.     /* buffer overflow signal */
  96.     __u32 signal;
  97.     /* actual size of bts_struct in bytes */
  98.     __u32 bts_size;
  99. };
  100. #endif
  101.  
  102. #define PTRACE_BTS_O_TRACE    0x1 /* branch trace */
  103. #define PTRACE_BTS_O_SCHED    0x2 /* scheduling events w/ jiffies */
  104. #define PTRACE_BTS_O_SIGNAL     0x4 /* send SIG<signal> on buffer overflow
  105.                        instead of wrapping around */
  106. #define PTRACE_BTS_O_CUT_SIZE    0x8 /* cut requested size to max available
  107.                        instead of failing */
  108.  
  109. #define PTRACE_BTS_CONFIG    40
  110. /* Configure branch trace recording.
  111.    ADDR points to a struct ptrace_bts_config.
  112.    DATA gives the size of that buffer.
  113.    A new buffer is allocated, iff the size changes.
  114.    Returns the number of bytes read.
  115. */
  116. #define PTRACE_BTS_STATUS    41
  117. /* Return the current configuration in a struct ptrace_bts_config
  118.    pointed to by ADDR; DATA gives the size of that buffer.
  119.    Returns the number of bytes written.
  120. */
  121. #define PTRACE_BTS_SIZE        42
  122. /* Return the number of available BTS records.
  123.    DATA and ADDR are ignored.
  124. */
  125. #define PTRACE_BTS_GET        43
  126. /* Get a single BTS record.
  127.    DATA defines the index into the BTS array, where 0 is the newest
  128.    entry, and higher indices refer to older entries.
  129.    ADDR is pointing to struct bts_struct (see asm/ds.h).
  130. */
  131. #define PTRACE_BTS_CLEAR    44
  132. /* Clear the BTS buffer.
  133.    DATA and ADDR are ignored.
  134. */
  135. #define PTRACE_BTS_DRAIN    45
  136. /* Read all available BTS records and clear the buffer.
  137.    ADDR points to an array of struct bts_struct.
  138.    DATA gives the size of that buffer.
  139.    BTS records are read from oldest to newest.
  140.    Returns number of BTS records drained.
  141. */
  142.  
  143. #endif
  144.